// 导入express
const express = require("express");

// 创建路由对象
const router = express.Router();

// 导入文章的路由处理函数模块
const article_handler = require("../router_handler/article");

// 导入验证数据的中间件
const expressJoi = require("@escook/express-joi");

/*
 使用express.urlencoded()中间件无法解析 multipart/form-date格式的请求体数据
 推荐使用multer来解析multipart/form-date格式的表单数据
**/
const multer = require("multer");
// 导入处理路由的核心模块
const path = require("path");

// 创建multer的实例对象，通过dest属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, "../uploads") });

// 导入文章的验证魔魁啊
const { add_article_schema } = require("../schema/article");

// 发布新文章的路由
// upload.single() 是一个局部生效的中间件，用来解析 FormData 格式的表单数据
// 将文件类型的数据，解析并挂载到 req.file 属性中
// 将文本类型的数据，解析并挂载到 req.body 属性中
// 在当前路由中，先后使用两个中间件
// 1. 先使用multer解析表单数据
// 2. 再使用expressJoi 对解析的表单数据进行验证
router.post(
  "/add",
  upload.single("cover_img"),
  expressJoi(add_article_schema),
  article_handler.addArticle
);

// 向外共享路由对象
module.exports = router;
